home *** CD-ROM | disk | FTP | other *** search
- package koala.dynamicjava.interpreter.context;
-
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
-
- public class VariableContext implements SimpleContext {
- protected Link scopes;
- protected Scope scope;
- protected Scope cscope;
-
- public void enterScope() {
- this.scopes = koala.dynamicjava.interpreter.context.VariableContext.LinkFactory.createLink(this.scopes);
- this.scope = this.scopes.scope;
- this.cscope = this.scopes.cscope;
- }
-
- public void enterScope(Set var1) {
- this.enterScope();
- Iterator var2 = var1.iterator();
-
- while(var2.hasNext()) {
- ((AbstractVariable)var2.next()).set(this, (Object)null);
- }
-
- }
-
- public void defineVariables(Set var1) {
- for(AbstractVariable var3 : var1) {
- if (var3.get(this) == koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
- var3.set(this, (Object)null);
- }
- }
-
- }
-
- public Set leaveScope() {
- HashSet var1 = new HashSet(11);
- Iterator var2 = this.scope.keySet().iterator();
-
- while(var2.hasNext()) {
- var1.add(new Variable((String)var2.next()));
- }
-
- var2 = this.cscope.keySet().iterator();
-
- while(var2.hasNext()) {
- Constant var10001 = new Constant;
- if (this == null) {
- throw null;
- }
-
- var10001.<init>(this, (String)var2.next());
- var1.add(var10001);
- }
-
- this.scopes = this.scopes.next;
- this.scope = this.scopes.scope;
- this.cscope = this.scopes.cscope;
- return var1;
- }
-
- public Set getCurrentScopeVariables() {
- HashSet var1 = new HashSet(11);
- Iterator var2 = this.scope.keySet().iterator();
-
- while(var2.hasNext()) {
- var1.add(new Variable((String)var2.next()));
- }
-
- var2 = this.cscope.keySet().iterator();
-
- while(var2.hasNext()) {
- Constant var10001 = new Constant;
- if (this == null) {
- throw null;
- }
-
- var10001.<init>(this, (String)var2.next());
- var1.add(var10001);
- }
-
- return var1;
- }
-
- public Set getCurrentScopeVariableNames() {
- HashSet var1 = new HashSet(11);
- Iterator var2 = this.scope.keySet().iterator();
-
- while(var2.hasNext()) {
- var1.add(var2.next());
- }
-
- var2 = this.cscope.keySet().iterator();
-
- while(var2.hasNext()) {
- var1.add(var2.next());
- }
-
- return var1;
- }
-
- public boolean isDefinedVariable(String var1) {
- for(Link var2 = this.scopes; var2 != null; var2 = var2.next) {
- if (var2.scope.get(var1) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
- return true;
- }
-
- if (var2.cscope.get(var1) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
- return true;
- }
- }
-
- return false;
- }
-
- public boolean isFinal(String var1) {
- for(Link var2 = this.scopes; var2 != null; var2 = var2.next) {
- if (var2.cscope.get(var1) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
- return true;
- }
- }
-
- return false;
- }
-
- public void define(String var1, Object var2) {
- if (this.scope.put(var1, var2) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
- throw new IllegalStateException(var1);
- }
- }
-
- public void defineConstant(String var1, Object var2) {
- if (this.cscope.put(var1, var2) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY || this.scope.get(var1) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
- throw new IllegalStateException(var1);
- }
- }
-
- public Object get(String var1) {
- for(Link var2 = this.scopes; var2 != null; var2 = var2.next) {
- Object var3 = var2.scope.get(var1);
- if (var3 != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY || (var3 = var2.cscope.get(var1)) != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
- return var3;
- }
- }
-
- throw new IllegalStateException(var1);
- }
-
- public void set(String var1, Object var2) {
- for(Link var3 = this.scopes; var3 != null; var3 = var3.next) {
- Object var4 = var3.scope.get(var1);
- if (var4 != koala.dynamicjava.interpreter.context.VariableContext.Scope.NO_SUCH_KEY) {
- var3.scope.put(var1, var2);
- return;
- }
- }
-
- throw new IllegalStateException(var1);
- }
-
- public void setConstant(String var1, Object var2) {
- this.cscope.put(var1, var2);
- }
-
- public void setVariable(String var1, Object var2) {
- this.scope.put(var1, var2);
- }
-
- public Map getConstants() {
- HashMap var1 = new HashMap(11);
-
- for(Link var2 = this.scopes; var2 != null; var2 = var2.next) {
- for(String var4 : var2.cscope.keySet()) {
- var1.put(var4, var2.cscope.get(var4));
- }
- }
-
- return var1;
- }
-
- public VariableContext() {
- this.enterScope();
- }
-
- public VariableContext(Set var1) {
- this();
- Iterator var2 = var1.iterator();
-
- while(var2.hasNext()) {
- ((AbstractVariable)var2.next()).set(this, (Object)null);
- }
-
- }
- }
-